if (name = 'Chicago') & ((font_setting.size <> 12) | (item = 9)) then begin
s := GetIndStr(128, 16);
end
else begin
s := GetIndStr(128, 14);
end; (* if *)
InsetRect(r, 3, 3);
TextBox(@s[1], length(s), r, teJustLeft);
ExitWindow(saved);
end;
function WhatOpenFont (wt: WindowType; item: integer): OSErr;
var
dlg: WindowPtr;
fontmenu: MenuHandle;
sizemenu: MenuHandle;
font_setting: ICFontRecord;
attr: longint;
i: integer;
tmpstr: Str255;
test_name: Str255;
count: longint;
font_num: integer;
begin
dlg := windowinfo[wt].window;
fontmenu := GetPopupMHandle(dlg, item);
count := sizeof(font_setting);
if (ICMapErr(ICGetPref(GetInstance, windowinfo[wt].items[item]^.key, attr, @font_setting, count)) <> noErr) | (count <> sizeof(font_setting)) then begin
GetFontName(GetAppFont, font_setting.font);
font_setting.face := [];
font_setting.size := GetDefFontSize;
end; (* if *)
ProcessAttributes(wt, item, attr);
GetFNum(font_setting.font, font_num);
if font_num = 0 then begin
GetFontName(GetAppFont, font_setting.font);
GetFNum(font_setting.font, font_num);
end; (* if *)
if FindMenuItem(fontmenu, font_setting.font, i) then begin
function MyModalFilter (dlg: DialogPtr; var er: EventRecord; var item: integer): boolean;
const
bs = chr(8);
var
ch: char;
begin
MyModalFilter := false;
if CancelModalFilter(dlg, er, item) then begin
MyModalFilter := true;
end
else if (er.what = keyDown) or (er.what = autoKey) then begin
if BAND(er.modifiers, cmdKey) = 0 then begin
ch := chr(BAND(er.message, $FF));
if DirtyKey(ch) & not (ch in [bs, '0'..'9']) then begin
SysBeep(1);
er.what := nullEvent;
end;
end;
end;
end;
function GetOtherSize (var size: longInt): boolean;
var
dlg: DialogPtr;
item: integer;
s: Str255;
saved_state: Ptr;
begin
dlg := GetNewDialog(500, nil, POINTER(-1));
NumToString(size, s);
SetItemText(dlg, 4, s);
SelIText(dlg, 4, 0, 255);
SetUpDefaultOutline(dlg, 1, 3);
ShowWindow(dlg);
DisableMenuBar(saved_state, -1);
InitCursor;
repeat
MovableModalDialog(@MyModalFilter, item);
until item in [1, 2];
GetOtherSize := item = 1;
if item = 1 then begin
GetItemText(dlg, 4, s);
StringToNum(s, size);
size := ValidateSize(size);
end;
ReEnableMenuBar(saved_state);
DisposeDialog(dlg);
end;
function WhatClickFontSize (wt: WindowType; item: integer; er: eventRecord): OSErr;
var
dlg: DialogPtr;
control: ControlHandle;
sizemenu: MenuHandle;
n: longInt;
tmpstr: Str255;
i: integer;
dummy: boolean;
begin
dlg := windowinfo[wt].window;
control := GetDControlHandle(dlg, item);
sizemenu := GetPopupMHandle(dlg, item);
if GetCtlValue(control) = CountMItems(sizemenu) then begin
n := ord(windowinfo[wt].items[item]^.spare_data);
dummy := GetOtherSize(n);
end
else begin
n := GetSizeMenuValue(dlg, item);
end;
if not BTST(sizemenu^^.enableFlags, 2) then begin { has initial strange number }
DelMenuItem(sizemenu, 1);
DelMenuItem(sizemenu, 1);
end;
windowinfo[wt].items[item]^.spare_data := Ptr(n);
NumToString(n, tmpstr);
if not FindMenuItem(sizemenu, tmpstr, i) then begin
InsMenuItem(sizemenu, '(-;fred', 0);
SetItem(sizemenu, 1, tmpstr);
i := 1;
end;
SetCtlMax(control, CountMItems(sizemenu));
SetCtlValue(control, i);
DisplayFontProc(windowinfo[wt].window, item + 1);
WhatClickFontSize := noErr;
end;
function WhatFlushFont (wt: WindowType; item: integer): OSErr;
var
dlg: DialogPtr;
err: OSErr;
font_setting: ICFontRecord;
old_font_setting: ICFontRecord;
attr: longint;
count: longint;
font: integer;
begin
dlg := windowinfo[wt].window;
GetCurrentSetting(dlg, item, font_setting, font);
(* get old values *)
count := sizeof(old_font_setting);
if (ICMapErr(ICGetPref(GetInstance, windowinfo[wt].items[item]^.key, attr, @old_font_setting, count)) <> noErr) | (count <> sizeof(old_font_setting)) then begin
old_font_setting.font := '';
end; (* if *)
(* write it back if changed *)
err := noErr;
if (old_font_setting.size <> font_setting.size) or (old_font_setting.face <> font_setting.face) or (IUEqualString(old_font_setting.font, font_setting.font) <> 0) then begin